Cytosim  PI
Cytoskeleton Simulator
Object Class Referenceabstract

Detailed Description

This is the interface used for writing / reading from a file.

Three functions identify an Object:

  • tag() [ASCII character] identifies the class of Object.
  • property->index() [integer] identifies its Property.
  • number() [serial-number] derived from Inventoried identifies unique instantiations.

These three qualities are concatenated in reference() and writeReference().

Objects are stored in ObjectSet.

Inheritance diagram for Object:
Node Inventoried Movable Couple FieldBase< VAL > Mecable Organizer Single Space Bridge CoupleLong Crosslink Fork Shackle Bead PointSet Aster Bundle Fake Nucleus Picket Wrist SpaceCapsule SpaceCylinder SpaceCylinderP SpaceCylinderZ SpaceDice SpaceEllipse SpacePeriodic SpacePolygon SpaceSphere SpaceSquare SpaceStrip SpaceTorus

Public Member Functions

 Object ()
 constructor
 
virtual Tag tag () const =0
 an ASCII character identifying the ObjectSet corresponding to this object
 
virtual const Propertyproperty () const =0
 Property associated with the Object.
 
virtual void write (OutputWrapper &) const =0
 write Object data to file
 
virtual void read (InputWrapper &, Simul &)=0
 read Object from file, within the Simul
 
std::string reference () const
 concatenation of [ tag(), property()->index(), number() ] in plain ascii More...
 
void writeReference (OutputWrapper &) const
 write a reference that identifies the Object uniquely More...
 
void writeReference (OutputWrapper &, Tag tag) const
 write a reference, but using the provided Tag More...
 
int mark () const
 birth mark value
 
void mark (int m)
 set birth mark
 
int fleck () const
 fleck value (not stored in trajectory files)
 
void fleck (int f) const
 set fleck (the value is not stored in trajectory files)
 
Objectnext () const
 extends Node::next(), with a cast to preserve type
 
Objectprev () const
 extends Node::prev(), with a cast to preserve type
 
- Public Member Functions inherited from Node
 Node ()
 constructor set as unlinked
 
virtual ~Node ()
 destructor More...
 
bool linked () const
 true if Node is linked
 
Nodenext () const
 the next Node in the list, or zero if this is last
 
Nodeprev () const
 the previous Node in the list, or zero if this is first
 
NodeListlist () const
 the list where the object is linked, or zero
 
ObjectSetobjset () const
 return associated ObjectSet
 
- Public Member Functions inherited from Inventoried
 Inventoried ()
 initialize (name=0)
 
 ~Inventoried ()
 destructor
 
void number (Number n)
 change the serial number
 
Number number () const
 serial number : a integer identifier, unique within each class
 
- Public Member Functions inherited from Movable
 Movable ()
 constructor
 
virtual ~Movable ()
 destructor
 
virtual Vector position () const
 return the position in space of the object
 
virtual void setPosition (Vector const &)
 move object to specified position More...
 
virtual bool translatable () const
 true if object accepts translations (default=false)
 
virtual void translate (Vector const &)
 move the object ( position += given vector ) More...
 
virtual bool rotatable () const
 true if object accepts rotations (default=false)
 
virtual void rotate (Rotation const &)
 rotate the object around the origin of coordinates More...
 
virtual void rotateP (Rotation const &)
 rotate the object around its current position More...
 
virtual void foldPosition (Modulo const *)
 perform modulo for periodic boundary conditions More...
 

Static Public Member Functions

static std::string strReference (char, int, Number, int)
 build a string reference by concatenating (tag, property_index, number, mark) More...
 
static void readReference (InputWrapper &, int &, Number &, int &, char pretag)
 read a reference (property_index, number, mark) from input More...
 
static void writeNullReference (OutputWrapper &)
 write a reference that does not refer to any Object
 
- Static Public Member Functions inherited from Movable
static Vector readPrimitive (std::istream &, const Space *)
 read a position specified with primitives, such as 'circle 5', etc. More...
 
static Vector readPosition (std::istream &, const Space *)
 read a position in space More...
 
static Vector readDirection (std::istream &, const Vector &, const Space *)
 read an orientation, and return a normalized vector More...
 
static Rotation readRotation (std::istream &, const Vector &, const Space *)
 read a rotation specified in is, at position pos More...
 

Static Public Attributes

static const Tag TAG = 'v'
 Object::TAG = 'v' represents the 'void' pointer.
 

Friends

class ObjectSet
 

Additional Inherited Members

- Protected Attributes inherited from Node
NodenNext
 the next Node in the list
 
NodenPrev
 the previous Node in the list
 
- Protected Attributes inherited from Inventoried
Number nNumber
 object identifier, unique within the class defined by tag()
 

Member Function Documentation

void readReference ( InputWrapper in,
int &  pi,
Number &  nb,
int &  mk,
char  pretag 
)
static

This must be able to read the formats written by Object::writeReference()

std::string reference ( ) const

The ASCII reference has the format XP:N or XP:N:M, where:

  • X=tag() is one ascii character.
  • P=property->index() is the index of the property (P>=0).
  • N=number() is a serial-number (N>0).
  • M=mark() is an integer (the mark is added only if it is not zero)

For example 'f0:21' is the fiber of property 0, number 21

std::string strReference ( char  tag,
int  pi,
Number  nb,
int  mk 
)
static

The ASCII reference has the format XP:N or XP:N:M, where:

  • X=tag is one ascii character.
  • P=pi is the index of the property (P>=0).
  • N=nb is a serial-number (N>0).
  • M=mk is an integer (the mark is added only if it is non-zero)

For example 'f0:21' is the fiber of property 0, number 21

void writeReference ( OutputWrapper out) const

Two binary formats are used:

  • A short format:
    • 1 byte for the tag()
    • 1 byte for the index of the property
    • 2 bytes for the Number
  • A long format:
    • the character '$'
    • 1 byte for the tag()
    • 2 bytes for the index of the property
    • 4 bytes for the Number
    • 4 bytes for the mark

There is only one ascii based format, as returned by reference(). All formats are read by ObjectSet::readReference()

void writeReference ( OutputWrapper out,
Tag  g 
) const

Same as writeReference(OutputWrapper&), excepts that tag() is replaced by 'g' given as argument.